package com.itgaoshu.hospitalproject.service.impl;

import com.itgaoshu.hospitalproject.bean.Lpharmacy;
import com.itgaoshu.hospitalproject.bean.Lrecord;
import com.itgaoshu.hospitalproject.mapper.LDrugMapper;
import com.itgaoshu.hospitalproject.service.LDrugService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class LDrugServiceImpl implements LDrugService {
    @Autowired
    private LDrugMapper lDrugMapper;
    //查询所有的药品
    @Override
    public List<Lpharmacy> selDrug(Lpharmacy lpharmacy) {
        return lDrugMapper.selDrug(lpharmacy);
    }

    //查询该患者的所有药品清单
    @Override
    public List<Lrecord> selDrugs(Lrecord lrecord) {
        return lDrugMapper.selDrugs(lrecord);
    }

    //当患者没有这个药品时直接添加该患者的药品清单和修改库房中的数量即可
    @Override
    public int addDrugs(Lrecord lrecord) {
        Double price = lrecord.getRepiceprice();
        Integer num = lrecord.getDurgnum();
        Double total = price * num;
        //计算总价
        lrecord.setRepicetotal(total);
        //添加未取药的所有的状态
        lrecord.setState(0);
        int i = lDrugMapper.addDrugs(lrecord);
        if(i==1){//表明添加成功了，可以让库房中的药品数量减少了
            lDrugMapper.updateNum(lrecord);
        }
        return i;
    }

    //当患者有这个药品清单时直接修改数量和总价即可以及修改药品库房中的数量
    @Override
    public int updateLrecord(Lrecord lrecord) {
        //修改患者药品清单的数量
        int i = lDrugMapper.updateLrecord(lrecord);
        int j=0;
        if(i==1){
            //修改库房药品的数量
            lDrugMapper.updateNum(lrecord);
            j=1;
        }
        return j;
    }

    //删除该患者的药品清单根据id来删除,同时添加药品库房中的数量信息
    @Override
    public int delDrug(Lrecord lrecord) {
        int i = lDrugMapper.delDrug(lrecord);
        int j=0;
        if(i==1){//表明移除成功
            //将药品库房的数量进行增加
            lDrugMapper.updNum(lrecord);
            j=1;
        }
        return j;
    }



    //取出药品
    @Override
    public int updItem(Lrecord lrecord) {
        return lDrugMapper.updItem(lrecord);
    }
}
